package com.comment.pojo.domain.logic.core;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;

import java.io.Serializable;
import java.util.Map;

import com.comment.config.dao.typeHandler.KV_LongInteger_Handler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

/**
 * (CoreShopGoods)表实体类
 *
 * @author cxy
 * @since 2024-12-09 13:56:53
 */
@ApiModel("商品")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@EqualsAndHashCode(callSuper = true)
@TableName(autoResultMap = true)
public class CoreShopGoods extends Model<CoreShopGoods> {// swagger2,mybatis-plus
    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 生成实体字段
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("商品id")
    private Long id;

    @ApiModelProperty("物品id")
    private Long propId;

    @ApiModelProperty("商店类型1.元宝商店2.五铢商店3.灵铢商店4.装备商店 ")
    private Integer type;

    @ApiModelProperty("货币数量")
    @TableField(typeHandler = KV_LongInteger_Handler.class)
    private Map<Long, Integer> price;

    @ApiModelProperty("限购类型 1.每日限购 2.每周限购 3.每月限购 4.6小时限购")
    private Integer limitType;

    @ApiModelProperty("限购数量")
    private Integer limitNum;

    @ApiModelProperty("权重")
    private Long weight;


    ///////////////////////////////////////////////////////////////////////////////////////////////////////// 序列化版本号
    @TableField(exist = false)
    private static final long serialVersionUID = -59823532268815653L;

    /////////////////////////////////////////////////////////////////////////////////////////////////////////// 获取主键值
    @Override
    public Serializable pkVal() {
        return this.id;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////////  基础数据初始化
    @TableField(exist = false)
    @ApiModelProperty("物品名称")
    private String name;
    @TableField(exist = false)
    @ApiModelProperty("稀有度")
    private Integer quality;
    @TableField(exist = false)
    @ApiModelProperty("购买次数")
    private Integer buyNum;
    public CoreShopGoods init() {
        this.buyNum = 0;
        return this;
    }
    /////////////////////////////////////////////////////////////////////////////////////////////////////////// 领域业务

}

